package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;
import org.springframework.data.annotation.Transient;

/**
 * 保单险种详情对象 imc_order_risk
 *
 * @author imc
 * @date 2021-05-10
 */
public class ImcOrderRisk extends BaseImcEntity
{
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 保单表外键 */
    @Excel(name = "保单表外键")
    private Long orderId;

    /** 产品库表的外键（非我的产品表） */
    @Excel(name = "产品库表的外键", readConverterExp = "非=我的产品表")
    private Long repoInsId;

    /** 险种代码 */
    @Excel(name = "险种代码")
    private String insCode;

    /** 主险M附加险A */
    @Excel(name = "主险M附加险A")
    private String riskType;

    /** 险种名称 */
    @Excel(name = "险种名称")
    private String riskName;

    /** 险种保费-首年/首次 */
    @Excel(name = "险种保费-首年/首次")
    private BigDecimal prem;

    /** 险种保费-首年/首次 */
    @Excel(name = "投保份数")
    private Integer unit;

    /** 险种基本保额 */
    @Excel(name = "险种基本保额")
    private BigDecimal amount;

    /** 应缴保费 */
    @Excel(name = "应缴保费")
    private BigDecimal payablePrem;

    /** 折标率 */
    @Excel(name = "折标率")
    private BigDecimal standRate;

    /** 实缴保费 */
    @Excel(name = "实缴保费")
    private BigDecimal paymentPrem;

    /** 首年保费对应标保 */
    @Excel(name = "首年保费对应标保")
    private BigDecimal standPrem;

    /** 代理人佣金率 */
    @Excel(name = "代理人佣金率")
    private BigDecimal commissionRate;

    /** 供应商手续费率 */
    @Excel(name = "供应商手续费率")
    private BigDecimal feeRate;

    /** 佣金 */
    @Excel(name = "佣金")
    private BigDecimal commission;

    //供应商折标系数
    private BigDecimal supplierStandRate;


    //年期换算系数
    private BigDecimal yearScale;

    /** 直佣是否 */
    @Excel(name = "直佣是否")
    @TableField(exist = false)
    private String isCommPaid;

    /** 保障期限类型 */
    @Excel(name = "保障期限类型")
    private String coveragePeriodEnum;

    /** 供应商的基础手续费 */
    @Excel(name = "供应商的基础手续费")
    private BigDecimal baseFee;

    /** 手续费结算月份 */
    @Excel(name = "手续费结算月份")
    private String settleMonth;

    /** 保障期限 */
    @Excel(name = "保障期限")
    private String coveragePeriodValue;

    /** Y结算 N和NULL没结算 */
    @Excel(name = "Y结算 N和NULL没结算")
    private String isFeeSettled;

    /** 保障期限单位 */
    @Excel(name = "保障期限单位")
    private String coveragePeriodUnit;

    /** 缴费年期类型 */
    @Excel(name = "缴费年期类型")
    private String chargePeriodEnum;

    /** 缴费期限 */
    @Excel(name = "缴费期限")
    private String chargePeriodValue;

    /** 缴费期限单位 */
    @Excel(name = "缴费期限单位")
    private String chargePeriodUnit;

    /** 险种方案外键 */
    @Excel(name = "险种方案外键")
    private Long insSchemeId;

    /** 领取年龄 */
    @Excel(name = "领取年龄")
    private String pensionAge;

    /** 因子1值 */
    @Excel(name = "因子1值")
    private String factor1Value;

    /** 缴费频率类型 */
    @Excel(name = "缴费频率类型")
    private String chargeIntervalEnum;

    /** 因子2值 */
    @Excel(name = "因子2值")
    private String factor2Value;

    /** 是否自动续保Y N */
    @Excel(name = "是否自动续保Y N")
    private String autoRenewalEnum;

    /** 因子3值 */
    @Excel(name = "因子3值")
    private String factor3Value;

    /** 险种是否已经豁免(险种保费豁免时为1，默认为0) */
    @Excel(name = "险种是否已经豁免(险种保费豁免时为1，默认为0)")
    private Long isExempted;

    /** 险种状态 */
    @Excel(name = "险种状态")
    private String riskStatusCode;

    /** 投保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "投保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDate;

    /** 撤单日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "撤单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelDate;

    /** 撤单原因 */
    @Excel(name = "撤单原因")
    private String cancelCauseNote;

    /** 承保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date insureDate;

    /** 保单所在年度首年为1 */
    @Excel(name = "保单所在年度首年为1")
    private Long policyYear;

    /** 保单缴费次数，首次为1 */
    @Excel(name = "保单缴费次数，首次为1")
    private Long payNum;

    /** 保单生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 保单失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expiredDate;

    /** 应缴日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "应缴日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payableDate;

    /** 客户回执签收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "客户回执签收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date custAckDate;

    /** 应缴月 */
    @Excel(name = "应缴月")
    private String payableMonth;

    /** 回执录入时间(回执录入系统时间) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回执录入时间(回执录入系统时间)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ackDate;

    /** 实缴日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实缴日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDate;

    /** 险种终止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "险种终止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 实缴月 */
    @Excel(name = "实缴月")
    private String paymentMonth;

    /** 终止原因[A犹豫期退保B退保C理赔终止] */
    @Excel(name = "终止原因[A犹豫期退保B退保C理赔终止]")
    private String endCause;

    /** 险种终止备注 */
    @Excel(name = "险种终止备注")
    private String endCauseNote;

    /** 豁免日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "豁免日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date waiverDate;

    /** 豁免原因 */
    @Excel(name = "豁免原因")
    private String waiverCause;

    @Excel(name = "备注")
    private String remark;

    /** 租户id,一个租户id唯一对一个机构id（默认机构id为根节点id暨法人机构） */
    @Excel(name = "租户id,一个租户id唯一对一个机构id", readConverterExp = "默=认机构id为根节点id暨法人机构")
    private Long tenantId;

    /** 宽限截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "宽限截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date graceDate;

    /**
     * 佣金发放月
     */
    @TableField(exist = false)
    private Date payDate;

    //复效时间
    private Date reinstatementDate;

    //减额交清
    private String reducedStatus;

    //是否新增附加险
    private String isNewAdditional;


    public Date getReinstatementDate() {
        return reinstatementDate;
    }

    public void setReinstatementDate(Date reinstatementDate) {
        this.reinstatementDate = reinstatementDate;
    }

    public String getReducedStatus() {
        return reducedStatus;
    }

    public void setReducedStatus(String reducedStatus) {
        this.reducedStatus = reducedStatus;
    }

    public String getIsNewAdditional() {
        return isNewAdditional;
    }

    public void setIsNewAdditional(String isNewAdditional) {
        this.isNewAdditional = isNewAdditional;
    }

    public Date getPayDate() {
        return payDate;
    }

    public void setPayDate(Date payDate) {
        this.payDate = payDate;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getRepoInsId() {
        return repoInsId;
    }

    public void setRepoInsId(Long repoInsId) {
        this.repoInsId = repoInsId;
    }

    public String getInsCode() {
        return insCode;
    }

    public void setInsCode(String insCode) {
        this.insCode = insCode;
    }

    public String getRiskType() {
        return riskType;
    }

    public void setRiskType(String riskType) {
        this.riskType = riskType;
    }

    public String getRiskName() {
        return riskName;
    }

    public void setRiskName(String riskName) {
        this.riskName = riskName;
    }

    public BigDecimal getPrem() {
        return prem;
    }

    public void setPrem(BigDecimal prem) {
        this.prem = prem;
    }

    public Integer getUnit() {
        return unit;
    }

    public void setUnit(Integer unit) {
        this.unit = unit;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getPayablePrem() {
        return payablePrem;
    }

    public void setPayablePrem(BigDecimal payablePrem) {
        this.payablePrem = payablePrem;
    }

    public BigDecimal getStandRate() {
        return standRate;
    }

    public void setStandRate(BigDecimal standRate) {
        this.standRate = standRate;
    }

    public BigDecimal getPaymentPrem() {
        return paymentPrem;
    }

    public void setPaymentPrem(BigDecimal paymentPrem) {
        this.paymentPrem = paymentPrem;
    }

    public BigDecimal getStandPrem() {
        return standPrem;
    }

    public void setStandPrem(BigDecimal standPrem) {
        this.standPrem = standPrem;
    }

    public BigDecimal getCommissionRate() {
        return commissionRate;
    }

    public void setCommissionRate(BigDecimal commissionRate) {
        this.commissionRate = commissionRate;
    }

    public BigDecimal getFeeRate() {
        return feeRate;
    }

    public void setFeeRate(BigDecimal feeRate) {
        this.feeRate = feeRate;
    }

    public BigDecimal getCommission() {
        return commission;
    }

    public void setCommission(BigDecimal commission) {
        this.commission = commission;
    }

    public BigDecimal getSupplierStandRate() {
        return supplierStandRate;
    }

    public void setSupplierStandRate(BigDecimal supplierStandRate) {
        this.supplierStandRate = supplierStandRate;
    }

    public BigDecimal getYearScale() {
        return yearScale;
    }

    public void setYearScale(BigDecimal yearScale) {
        this.yearScale = yearScale;
    }

    public String getIsCommPaid() {
        return isCommPaid;
    }

    public void setIsCommPaid(String isCommPaid) {
        this.isCommPaid = isCommPaid;
    }

    public String getCoveragePeriodEnum() {
        return coveragePeriodEnum;
    }

    public void setCoveragePeriodEnum(String coveragePeriodEnum) {
        this.coveragePeriodEnum = coveragePeriodEnum;
    }

    public BigDecimal getBaseFee() {
        return baseFee;
    }

    public void setBaseFee(BigDecimal baseFee) {
        this.baseFee = baseFee;
    }

    public String getSettleMonth() {
        return settleMonth;
    }

    public void setSettleMonth(String settleMonth) {
        this.settleMonth = settleMonth;
    }

    public String getCoveragePeriodValue() {
        return coveragePeriodValue;
    }

    public void setCoveragePeriodValue(String coveragePeriodValue) {
        this.coveragePeriodValue = coveragePeriodValue;
    }

    public String getIsFeeSettled() {
        return isFeeSettled;
    }

    public void setIsFeeSettled(String isFeeSettled) {
        this.isFeeSettled = isFeeSettled;
    }

    public String getCoveragePeriodUnit() {
        return coveragePeriodUnit;
    }

    public void setCoveragePeriodUnit(String coveragePeriodUnit) {
        this.coveragePeriodUnit = coveragePeriodUnit;
    }

    public String getChargePeriodEnum() {
        return chargePeriodEnum;
    }

    public void setChargePeriodEnum(String chargePeriodEnum) {
        this.chargePeriodEnum = chargePeriodEnum;
    }

    public String getChargePeriodValue() {
        return chargePeriodValue;
    }

    public void setChargePeriodValue(String chargePeriodValue) {
        this.chargePeriodValue = chargePeriodValue;
    }

    public String getChargePeriodUnit() {
        return chargePeriodUnit;
    }

    public void setChargePeriodUnit(String chargePeriodUnit) {
        this.chargePeriodUnit = chargePeriodUnit;
    }

    public Long getInsSchemeId() {
        return insSchemeId;
    }

    public void setInsSchemeId(Long insSchemeId) {
        this.insSchemeId = insSchemeId;
    }

    public String getPensionAge() {
        return pensionAge;
    }

    public void setPensionAge(String pensionAge) {
        this.pensionAge = pensionAge;
    }

    public String getFactor1Value() {
        return factor1Value;
    }

    public void setFactor1Value(String factor1Value) {
        this.factor1Value = factor1Value;
    }

    public String getChargeIntervalEnum() {
        return chargeIntervalEnum;
    }

    public void setChargeIntervalEnum(String chargeIntervalEnum) {
        this.chargeIntervalEnum = chargeIntervalEnum;
    }

    public String getFactor2Value() {
        return factor2Value;
    }

    public void setFactor2Value(String factor2Value) {
        this.factor2Value = factor2Value;
    }

    public String getAutoRenewalEnum() {
        return autoRenewalEnum;
    }

    public void setAutoRenewalEnum(String autoRenewalEnum) {
        this.autoRenewalEnum = autoRenewalEnum;
    }

    public String getFactor3Value() {
        return factor3Value;
    }

    public void setFactor3Value(String factor3Value) {
        this.factor3Value = factor3Value;
    }

    public Long getIsExempted() {
        return isExempted;
    }

    public void setIsExempted(Long isExempted) {
        this.isExempted = isExempted;
    }

    public String getRiskStatusCode() {
        return riskStatusCode;
    }

    public void setRiskStatusCode(String riskStatusCode) {
        this.riskStatusCode = riskStatusCode;
    }

    public Date getApplyDate() {
        return applyDate;
    }

    public void setApplyDate(Date applyDate) {
        this.applyDate = applyDate;
    }

    public Date getCancelDate() {
        return cancelDate;
    }

    public void setCancelDate(Date cancelDate) {
        this.cancelDate = cancelDate;
    }

    public String getCancelCauseNote() {
        return cancelCauseNote;
    }

    public void setCancelCauseNote(String cancelCauseNote) {
        this.cancelCauseNote = cancelCauseNote;
    }

    public Date getInsureDate() {
        return insureDate;
    }

    public void setInsureDate(Date insureDate) {
        this.insureDate = insureDate;
    }

    public Long getPolicyYear() {
        return policyYear;
    }

    public void setPolicyYear(Long policyYear) {
        this.policyYear = policyYear;
    }

    public Long getPayNum() {
        return payNum;
    }

    public void setPayNum(Long payNum) {
        this.payNum = payNum;
    }

    public Date getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public Date getExpiredDate() {
        return expiredDate;
    }

    public void setExpiredDate(Date expiredDate) {
        this.expiredDate = expiredDate;
    }

    public Date getPayableDate() {
        return payableDate;
    }

    public void setPayableDate(Date payableDate) {
        this.payableDate = payableDate;
    }

    public Date getCustAckDate() {
        return custAckDate;
    }

    public void setCustAckDate(Date custAckDate) {
        this.custAckDate = custAckDate;
    }

    public String getPayableMonth() {
        return payableMonth;
    }

    public void setPayableMonth(String payableMonth) {
        this.payableMonth = payableMonth;
    }

    public Date getAckDate() {
        return ackDate;
    }

    public void setAckDate(Date ackDate) {
        this.ackDate = ackDate;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getPaymentMonth() {
        return paymentMonth;
    }

    public void setPaymentMonth(String paymentMonth) {
        this.paymentMonth = paymentMonth;
    }

    public String getEndCause() {
        return endCause;
    }

    public void setEndCause(String endCause) {
        this.endCause = endCause;
    }

    public String getEndCauseNote() {
        return endCauseNote;
    }

    public void setEndCauseNote(String endCauseNote) {
        this.endCauseNote = endCauseNote;
    }

    public Date getWaiverDate() {
        return waiverDate;
    }

    public void setWaiverDate(Date waiverDate) {
        this.waiverDate = waiverDate;
    }

    public String getWaiverCause() {
        return waiverCause;
    }

    public void setWaiverCause(String waiverCause) {
        this.waiverCause = waiverCause;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Long getTenantId() {
        return tenantId;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    public Date getGraceDate() {
        return graceDate;
    }

    public void setGraceDate(Date graceDate) {
        this.graceDate = graceDate;
    }
}
